If your use case is to be able to switch locale with language links and persist this locale, here is a way.

You set a default locale in a before filter by adding the following lines to ```application_controller.rb```:
```ruby
  before_action :set_locale

  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
  end

  def default_url_options(options={})
    { :locale => I18n.locale }
  end
```
or follow the [Specifying locale guide.](https://github.com/activeadmin/activeadmin/wiki/Specifying-locale)

Let's add a menu for selecting languages in ```active_admin.rb```:

```ruby
 config.namespace :admin do |admin|
    admin.build_menu :utility_navigation do |menu|
      menu.add :label => "Languages" do |lang|
        lang.add :label => "English",:url => proc { url_for(:locale => 'en') }, id: 'i18n-en', :priority => 1
        lang.add :label => "Spanish",:url => proc { url_for(:locale => 'es') }, id: 'i18n-es', :priority => 2
      end
      menu.add :label => proc { display_name current_active_admin_user },
                :url => '#',
                :id => 'current_user',
                :if => proc { current_active_admin_user? }
      admin.add_logout_button_to_menu menu
    end
  end
```

Prefix url with the locale in `routes.rb`:

```ruby
  scope ":locale", :path_prefix => '/:locale' do
    ActiveAdmin.routes(self)
  end
```

Edit: For a rails 4, use this instead:

```ruby
scope ':locale', defaults: { locale: I18n.locale } do
  ActiveAdmin.routes(self)
end 
```

You now have an active admin app that persists locale between queries and permits the user to choose his locale.

__You will notice, however, that all links keep the default locale of your app.__  

You set the default locale in ```application.rb```:
```ruby
 config.before_configuration do
    I18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
    I18n.default_locale = :en
    I18n.reload!
 end
```

You can override this default locale by passing the locale to all `_path` methods.

The example below reproduces the default actions of active admin including cancan authorization and the locale selected by the user. Let's say we have a AA page ```customers.rb```:

```ruby
ActiveAdmin.register Customer do
  menu :priority => 2, url: ->{ app_customers_path(locale: I18n.locale) } # Pass the locale to the menu link

  action_item do
    link_to I18n.t("New Customer"), new_app_customer_path(locale: I18n.locale) # Pass the locale to the new button
  end

index do
    column :firstname
    column :lastname
    # Reproduce the default actions of AA, authorization with cancan, pass the locale
    column I18n.t("Actions") do |customer|
      link_to(I18n.t("Add Coupon"), new_app_coupon_path(:customer_id => customer.id, :locale => I18n.locale )) + " | " + \
      link_to(I18n.t("Add Order"), new_app_order_path(:customer_id => customer.id, :locale => I18n.locale))
    end

    actions defaults: false do |customer|
      links = ''.html_safe
      if can?(:read, customer)
        links += link_to I18n.t('active_admin.view'), app_customer_path(customer, locale: I18n.locale), class: "member_link view_link"
      end

      if can?(:update, customer)
        links += link_to I18n.t('active_admin.edit'), edit_app_customer_path(customer, locale: I18n.locale), class: "member_link edit_link"
      end

      if can?(:destroy, customer)
        links += link_to I18n.t('active_admin.delete'), app_customer_path(customer, locale: I18n.locale), :method => :delete, :confirm => I18n.t('active_admin.delete_confirmation'), class: "member_link delete_link"
      end
      links
    end
end
```

